package qc.module.qms.mapper;

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
import qc.common.core.enums.qms.QmsElementValueDataTypeEnum;
import qc.module.qms.dto.element.ElementDto;
import qc.module.qms.entity.QmsElement;

import java.util.List;

@Mapper
public interface ElementMapper {
    ElementMapper MAPPER = Mappers.getMapper(ElementMapper.class);

    @Mapping(target = "valuetype", source = "valuetype.index")
    ElementDto toDto(QmsElement entity);

    List<ElementDto> toDtoList(List<QmsElement> entityList);

    //数据值类型为枚举，单独进行转换
    @Mapping(target = "valuetype", ignore = true)
    QmsElement toEntity(ElementDto dto);

    /**
     * DTO转换为Entity
     *
     * @param dto 监测要素DTO
     * @return QmsElement
     */
    default QmsElement dtoToEntity(ElementDto dto) {
        QmsElement entity = ElementMapper.MAPPER.toEntity(dto);
        // 处理数据类型，使用枚举转换方法
        entity.setValuetype(QmsElementValueDataTypeEnum.getQmsElementValueDataTypeEnum(dto.getValuetype()));
        
        return entity;
    }
}
